Добавлено локальное хранение токена авторизации#149
Conversation
- Добавлены core-модули datastore-api и datastore-impl - Добавлен TokenDataStore для работы с accessToken - Реализовано сохранение accessToken через Preferences DataStore - Добавлено чтение сохранённого accessToken - Добавлена очистка accessToken при logout - Добавлен corruptionHandler для DataStore - Добавлена DI-регистрация DataStore и TokenDataStore - datastoreModule подключён в Application - TokenDataStore подключён в LoginRepositoryImpl - После успешной авторизации accessToken сохраняется локально - Добавлен CheckAuthStateUseCase для проверки авторизованного состояния - Добавлен LogoutUseCase для очистки токена
| * - очищает токены авторизации | ||
| */ | ||
| class TokenDataStoreImpl( | ||
| private val dataStore: DataStore<Preferences>, |
There was a problem hiding this comment.
У нас в приложении в манифесте включен бэкап, куда бэкапятся также shared preferences. Это риск. И в целом я думаю было бы безопаснее юзать для хранения такого токена что-то другое, вот из доков:
To back up user credentials and authentication tokens, don't store them in shared preferences or a file. Instead use Block Store APIs to store and manage credentials. This helps ensure that they are securely stored and can be backed up and restored alongside other app data.
There was a problem hiding this comment.
Немного неправильно выражаюсь - у тебя же не shared preferences, а datastore. Datastore держит данные в файлике, по дефолту он без шифрования
…ние accessToken через Android Keystore
| responseToDomainMapper.map(response) | ||
| val authResult = responseToDomainMapper.map(response) | ||
|
|
||
| tokenDataStore.saveAccessToken( |
There was a problem hiding this comment.
Если я правильно понимаю, в случае exception в этой строке (не получилось сохранить токен), этот exception упадет в не совсем релеватный catch? Серди catch есть IOException, но он превращается в LoginError.Network
🧩 Что сделано:
Реализовано локальное хранение accessToken через DataStore:
• Добавлены core-модули datastore-api и datastore-impl
• Добавлен TokenDataStore для работы с accessToken
• Реализовано сохранение accessToken
• Реализовано чтение сохранённого accessToken
• Реализована очистка accessToken при logout
• Добавлен corruptionHandler для DataStore
• После успешной авторизации accessToken сохраняется локально
UseCase:
• Добавлен CheckAuthStateUseCase для проверки авторизованного состояния
• Добавлен LogoutUseCase для очистки токена при logout
DI:
• Добавлена регистрация Preferences DataStore
• Добавлена регистрация TokenDataStore
• datastoreModule подключён в Application
• TokenDataStore подключён в LoginRepositoryImpl
🗂 Затронутые модули:
• core:datastore-api
• core:datastore-impl
• feature:authentication:impl
• app